import {NgModule} from '@angular/core';
import {Zero3LayoutNavbarComponent} from '../zero3-layout-navbar/zero3-layout-navbar.component';
import {Zero3LayoutMenuComponent} from '../zero3-layout-menu/zero3-layout-menu.component';
import {Zero3ListPageComponent} from '../zero3-component/zero3-list-page/zero3-list-page.component';
import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms';
import {FontAwesomeModule} from '@fortawesome/angular-fontawesome';
import {BsDropdownModule, ButtonsModule, ModalModule, TooltipModule} from 'ngx-bootstrap';
import {NgSelectModule} from '@ng-select/ng-select';
import {LoggingInterceptor} from '../http-interceptors/logging-interceptor';
import {TemStyle1Service} from '../../module/template-example/tem-style1/tem-style1.service';
import {Services} from '../module/services';
import {HttpRequestClient} from '../http-request-client/http-request-client';
import {HttpClientJsonpModule, HttpClientModule} from '@angular/common/http';
import {Zero3ListSearchTextComponent} from '../zero3-component/zero3-list-search-text/zero3-list-search-text.component';
import {OWL_DATE_TIME_LOCALE, OwlDateTimeModule, OwlNativeDateTimeModule} from 'ng-pick-datetime';
import {ListSearchDatatimeRangeComponent} from './list-search-datatime-range/list-search-datatime-range.component';
import {ListSearchTextComponent} from './list-search-text/list-search-text.component';
import {GooTypeLevel1Service} from '../../module/goods-management/goo-type-level1/goo-type-level1.service';

import {DraGoodsService} from '../../module/draw-management/dra-goods/dra-goods.service';
import {ConIndexShowImgService} from '../../module/config-management/con-index-showImg/con-index-showImg.service';
import {ConActivityForecastService} from '../../module/config-management/con-activity-forecast/con-activity-forecast.service';
import {ConActivityIndexService} from '../../module/config-management/con-activity-index/con-activity-index.service';
import {ConIndexNewGoodsService} from '../../module/config-management/con-index-new-goods/con-index-new-goods.service';
import {ConIndexVideoService} from '../../module/config-management/con-index-video/con-index-video.service';
import {ConZoneService} from '../../module/config-management/con-zone/con-zone.service';
import {SocSignService} from '../../module/social-management/soc-sign/soc-sign.service';
import {GooGoodsService} from '../../module/goods-management/goo-goods/goo-goods.service';
import {GooBrandService} from '../../module/goods-management/goo-brand/goo-brand.service';
import {GooAttributeService} from '../../module/goods-management/goo-attribute/goo-attribute.service';
// this line is use for import service, don't remove
import {GooBaseGoodsSpecificationValueService} from '../../module/goods-management/goo-base-goods-specification-value/goo-base-goods-specification-value.service';
import {GooBaseGoodsSpecificationService} from '../../module/goods-management/goo-base-goods-specification/goo-base-goods-specification.service';
import {ConFeedbackService} from '../../module/config-management/con-feedback/con-feedback.service';
import {ConShareManageService} from '../../module/config-management/con-share-manage/con-share-manage.service';
import {MesCreateService} from '../../module/message-management/mes-create/mes-create.service';
import {GooBaseGoodsAttributeValueService} from '../../module/goods-management/goo-base-goods-attribute-value/goo-base-goods-attribute-value.service';
import {GooBaseGoodsAttributeService} from '../../module/goods-management/goo-base-goods-attribute/goo-base-goods-attribute.service';
import {MemRaffleTicketService} from '../../module/member-management/mem-raffle-ticket/mem-raffle-ticket.service';
import {MemPointService} from '../../module/member-management/mem-point/mem-point.service';
import {GooOutWarehouseService} from '../../module/goods-management/goo-out-warehouse/goo-out-warehouse.service';
import {AftApplyOrderLineService} from '../../module/after-sale-management/aft-apply-order-line/aft-apply-order-line.service';
import {GooInWarehouseService} from '../../module/goods-management/goo-in-warehouse/goo-in-warehouse.service';
import {GooBrandRecommendGoodsService} from '../../module/goods-management/goo-brand-recommend-goods/goo-brand-recommend-goods.service';
import {BaseGoodsService} from '../../module/goods-management/goo-base-goods/base-goods.service';
import {InsMessagingService} from '../../module/instant-messaging/ins-messaging/ins-messaging.service';
import {FinReconciliationManageService} from '../../module/finance-management/fin-reconciliation-manage/fin-reconciliation-manage.service';
import {FinFinanceManageService} from '../../module/finance-management/fin-finance-manage/fin-finance-manage.service';
import {DraParticipateMemberService} from '../../module/draw-management/dra-participate-member/dra-participate-member.service';
import {WmsWarningConfigService} from '../../module/wms-management/wms-warning-config/wms-warning-config.service';
import {WmsTraysManageService} from '../../module/wms-management/wms-trays-manage/wms-trays-manage.service';
import {WmsWarehouseManageService} from '../../module/wms-management/wms-warehouse-manage/wms-warehouse-manage.service';
import {WmsStockDetailService} from '../../module/wms-management/wms-stock-detail/wms-stock-detail.service';
import {WmsStockOutService} from '../../module/wms-management/wms-stock-out/wms-stock-out.service';
import {WmsStockTransferService} from '../../module/wms-management/wms-stock-transfer/wms-stock-transfer.service';
import {WmsStockPutService} from '../../module/wms-management/wms-stock-put/wms-stock-put.service';
import {WmsPurchaseOrderThreeService} from '../../module/wms-management/wms-purchase-order-three/wms-purchase-order-three.service';
import {WmsPurchaseOrderSelfService} from '../../module/wms-management/wms-purchase-order-self/wms-purchase-order-self.service';
import {AftWorkOrderService} from '../../module/after-sale-management/aft-work-order/aft-work-order.service';
import {AftApplyOrderService} from '../../module/after-sale-management/aft-apply-order/aft-apply-order.service';
import {OrdPayDetailService} from '../../module/order-management/ord-pay-detail/ord-pay-detail.service';
import {GooAttributeValueService} from '../../module/goods-management/goo-attribute-value/goo-attribute-value.service';
import {GooTypeLevel2Service} from '../../module/goods-management/goo-type-level2/goo-type-level2.service';
import {OrdOrderService} from '../../module/order-management/ord-order/ord-order.service';
import {OrdOrderLineService} from '../../module/order-management/ord-order-line/ord-order-line.service';
import {OrdRefundService} from '../../module/order-management/ord-refund/ord-refund.service';
import {MemMemberService} from '../../module/member-management/mem-member/mem-member.service';
import {MemThirdLoginInfoService} from '../../module/member-management/mem-third-login-info/mem-third-login-info.service';
import {MemJifenService} from '../../module/member-management/mem-jifen/mem-jifen.service';
import {MemCollectService} from '../../module/member-management/mem-collect/mem-collect.service';
import {SysUserService} from '../../module/system-management/sys-user/sys-user.service';
import {MemShippingAddressService} from '../../module/member-management/mem-shipping-address/mem-shipping-address.service';
import {MemShoppingCarService} from '../../module/member-management/mem-shopping-car/mem-shopping-car.service';
import {MesSystemService} from '../../module/message-management/mes-system/mes-system.service';
import {MesUserService} from '../../module/message-management/mes-user/mes-user.service';
import {SysFunctionService} from '../../module/system-management/sys-function/sys-function.service';
import {SysMenuService} from '../../module/system-management/sys-menu/sys-menu.service';
import {SysOrganizeService} from '../../module/system-management/sys-organize/sys-organize.service';
import {SysPermissionsService} from '../../module/system-management/sys-permissions/sys-permissions.service';
import {SysRoleService} from '../../module/system-management/sys-role/sys-role.service';
import {MesLogisticsService} from '../../module/message-management/mes-logistics/mes-logistics.service';
import {MesOrderService} from '../../module/message-management/mes-order/mes-order.service';
import {DraFreeLotteryService} from '../../module/draw-management/dra-free-lottery/dra-free-lottery.service';
import {DraIntegralLotteryService} from '../../module/draw-management/dra-integral-lottery/dra-integral-lottery.service';
import {AliOSSService} from '../../module/aliyun/ali-oss/ali-oss.service';
import {FileUploadModule} from 'ng2-file-upload';
import {FroalaEditorModule, FroalaViewModule} from 'angular-froala-wysiwyg';
import {InputGroupDataComponent} from './input-group-data/input-group-data.component';
import {ConZoneTypeService} from '../../module/config-management/con-zone-type/con-zone-type.service';
import {ConZoneManageService} from '../../module/config-management/con-zone-manage/con-zone-manage.service';
import {ConZoneTemplateService} from '../../module/config-management/con-zone-template/con-zone-template.service';
import {SocArticleService} from '../../module/social-management/soc-article/soc-article.service';
import {InputDataTimeComponent} from './input-data-time/input-data-time.component';
import {MesTypeService} from '../../module/message-management/mes-type/mes-type.service';
import {MesTemplateService} from '../../module/message-management/mes-template/mes-template.service';
import {MesLogService} from '../../module/message-management/mes-log/mes-log.service';
import {ConVersionService} from '../../module/config-management/con-version/con-version.service';
import {GooInventoryService} from '../../module/goods-management/goo-inventory/goo-inventory.service';
import {OrdOrderLogisticsService} from '../../module/order-management/ord-order-logistics/ord-order-logistics.service';
import {ListSearchNumberRangeComponent} from './list-search-number-range/list-search-number-range.component';
import {Bootstrap4CardComponent} from './bootstrap4/bootstrap4-card/bootstrap4-card.component';
import {Bootstrap4InputSaveTextComponent} from './bootstrap4/bootstrap4-input-save-text/bootstrap4-input-save-text.component';


@NgModule({
    declarations: [
        Zero3LayoutNavbarComponent,
        Zero3LayoutMenuComponent,
        Zero3ListPageComponent,
        ListSearchDatatimeRangeComponent,
        ListSearchNumberRangeComponent,
        Zero3ListSearchTextComponent,
        ListSearchTextComponent,
        InputGroupDataComponent,
        InputDataTimeComponent,
        Bootstrap4CardComponent,
        Bootstrap4InputSaveTextComponent,
    ],
    imports: [
        CommonModule,
        FormsModule,
        HttpClientModule, HttpClientJsonpModule,
        FontAwesomeModule,
        ButtonsModule.forRoot(),
        BsDropdownModule.forRoot(),
        TooltipModule.forRoot(),
        ModalModule.forRoot(),
        OwlDateTimeModule,
        OwlNativeDateTimeModule,
        NgSelectModule,
        FileUploadModule,
        FroalaEditorModule, FroalaViewModule
    ],
    providers: [
        LoggingInterceptor,
        TemStyle1Service,
        AliOSSService,
        GooTypeLevel1Service,
        GooTypeLevel2Service,
        GooGoodsService,
        GooBrandService,
        GooAttributeService,
        GooInventoryService,
        // this line is for provider, don't remove
        GooBaseGoodsSpecificationValueService,
        GooBaseGoodsSpecificationService,
        ConFeedbackService,
        ConShareManageService,
        GooBaseGoodsAttributeValueService,
        GooBaseGoodsAttributeService,
        MemRaffleTicketService,
        MemPointService,
        MesCreateService,
        GooOutWarehouseService,
        AftApplyOrderLineService,
        GooInWarehouseService,
        GooBrandRecommendGoodsService,
        BaseGoodsService,
        InsMessagingService,
        FinReconciliationManageService,
        FinFinanceManageService,
        DraParticipateMemberService,
        WmsWarningConfigService,
        WmsTraysManageService,
        WmsWarehouseManageService,
        WmsStockDetailService,
        WmsStockOutService,
        WmsStockTransferService,
        WmsStockPutService,
        WmsPurchaseOrderThreeService,
        WmsPurchaseOrderSelfService,
        AftWorkOrderService,
        AftApplyOrderService,
        OrdPayDetailService,
        GooAttributeValueService,
        DraGoodsService,
        MemMemberService,
        MemThirdLoginInfoService,
        OrdOrderService,
        OrdOrderLineService,
        OrdRefundService,
        ConIndexShowImgService,
        ConActivityForecastService,
        ConActivityIndexService,
        ConIndexNewGoodsService,
        ConIndexVideoService,
        ConZoneService,
        ConZoneTemplateService,
        ConZoneTypeService,
        ConZoneManageService,
        ConVersionService,
        SocSignService,
        SocArticleService,
        MemJifenService,
        MemCollectService,
        SysUserService,
        MemShippingAddressService,
        MemShoppingCarService,
        MesSystemService,
        MesUserService,
        MesTypeService,
        MesTemplateService,
        MesLogService,
        SysFunctionService,
        SysMenuService,
        SysOrganizeService,
        SysPermissionsService,
        SysRoleService,
        MesLogisticsService,
        MesOrderService,
        DraFreeLotteryService,
        DraIntegralLotteryService,
        OrdOrderLogisticsService,
        Services,
        HttpRequestClient,
        {provide: OWL_DATE_TIME_LOCALE, useValue: 'zh-cn'},
    ],
    exports: [
        CommonModule,
        FormsModule,
        HttpClientModule, HttpClientJsonpModule,
        FontAwesomeModule,
        ButtonsModule,
        BsDropdownModule,
        TooltipModule,
        ModalModule,
        OwlDateTimeModule,
        OwlNativeDateTimeModule,
        NgSelectModule,
        FileUploadModule,
        FroalaEditorModule, FroalaViewModule,

        Zero3LayoutNavbarComponent,
        Zero3LayoutMenuComponent,
        Zero3ListPageComponent,
        ListSearchDatatimeRangeComponent,
        ListSearchNumberRangeComponent,
        Zero3ListSearchTextComponent,
        ListSearchTextComponent,
        InputGroupDataComponent,
        InputDataTimeComponent,
        Bootstrap4CardComponent,
        Bootstrap4InputSaveTextComponent,
    ]
})
export class Zero3Common {
    constructor(private http: HttpRequestClient, private services: Services) {
        console.log('Zero3Common init static injection:');
        console.log(http);
        console.log(services);
    }
}
